// app/vendor-data-plant/layout.tsx import * as React from "react" import { cookies } from "next/headers" import { Shell } from "@/components/shell" import { getVendorProjectsAndContracts } from "@/lib/vendor-data-plant/services" import { VendorDataContainer } from "@/components/vendor-data-plant/vendor-data-container" import { authOptions } from "@/app/api/auth/[...nextauth]/route" import { getServerSession } from "next-auth" import { InformationButton } from "@/components/information/information-button" import { useTranslation } from "@/i18n" interface VendorDataLayoutProps { children: React.ReactNode params: { lng?: string } } // Layout 컴포넌트는 서버 컴포넌트입니다 export default async function VendorDataLayout({ children, params, }: VendorDataLayoutProps) { // 기본 언어는 'ko'로 설정, params.locale이 있으면 사용 const { lng } = await params; const language = lng || 'en' const { t } = await useTranslation(language, 'engineering') const session = await getServerSession(authOptions) const vendorId = session?.user.companyId // const vendorId = "17" const idAsNumber = Number(vendorId) // 프로젝트 데이터 가져오기 const projects = await getVendorProjectsAndContracts(idAsNumber) // 레이아웃 설정 쿠키 가져오기 // Next.js 15에서는 cookies()가 Promise를 반환하므로 await 사용 const cookieStore = await cookies() // 이제 cookieStore.get() 메서드 사용 가능 const layout = cookieStore.get("react-resizable-panels:layout:mail") const collapsed = cookieStore.get("react-resizable-panels:collapsed") const defaultLayout = layout ? JSON.parse(layout.value) : undefined const defaultCollapsed = collapsed ? JSON.parse(collapsed.value) : undefined return (

{t('layout.page_title')}

{/*

각종 Data 입력할 수 있습니다

*/}
{projects.length === 0 ? (
{t('layout.no_projects')}
) : ( {/* 페이지별 콘텐츠가 여기에 들어갑니다 */} {children} )}
) }